<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>系统公告</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="/lib/layui-v2.5.5/css/layui.css" media="all">
    <link rel="stylesheet" href="/css/public.css" media="all">
</head>
<body>
<div class="layuimini-container">
    <div class="layuimini-main">

        <fieldset class="layui-elem-field layuimini-search">
            <legend>搜索信息</legend>
            <div style="margin: 10px 10px 10px 10px">
                <form class="layui-form layui-form-pane" action="" id="searchFrm">
                    <div class="layui-form-item">
                        <div class="layui-inline">
                            <label class="layui-form-label">标题</label>
                            <div class="layui-input-inline">
                                <input type="text" name="title" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label">内容</label>
                            <div class="layui-input-inline">
                                <input type="text" name="content" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label">创建人</label>
                            <div class="layui-input-inline">
                                <input type="text" name="createBy" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-form-item" style="margin-top: 5px;">
                            <div class="layui-block" style="text-align: center;">
                                <a class="layui-btn " lay-submit=""  lay-filter="data-search-btn"><label class="layui-icon layui-icon-search"></label>搜索</a>
                                <a class="layui-btn layui-btn-warm" onclick="javascript:$('#searchFrm')[0].reset()" lay-filter="data-search-btn"><label class="layui-icon layui-icon-refresh"></label>重置</a>
                            </div>
                        </div>
                    </div>
                </form>
            </div>
        </fieldset>

        <script type="text/html" id="toolBar">
          <div class="layui-btn-group">
            <a class="layui-btn layui-btn-sm data-count-add" lay-event="add">添加</a>
            <a class="layui-btn layui-btn-sm data-count-delete" lay-event="delete">删除</a>
          </div>
		    </script>
        <table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table>

        <script type="text/html" id="tableBar">
          <a class="layui-btn layui-btn-xs layui-btn-normal data-count-show" lay-event="show">查看</a>
          <a class="layui-btn layui-btn-xs layui-btn-warm data-count-update" lay-event="update">修改</a>
        </script>

        <!--添加和修改的弹出层开始-->
        <div id="addOrUpdateDiv" style="display: none;padding: 0.3125rem">
          <form method="post" class="layui-form" lay-filter="dataFrm" id="dataFrm">
            <div class="layui-form-item">
              <label class="layui-form-label">标题</label>
              <div class="layui-input-block">
                <input type="hidden" name="id" />
                <input type="text" name="title" lay-verify="required" autocomplete="off" placeholder="请输入标题" class="layui-input">
              </div>
              </div>
              <div class="layui-form-item">
                <label class="layui-form-label">内容</label>
                <div class="layui-input-block">
                  <div id="content" name="content" ></div>
                </div>
              </div>
              <div class="layui-form-item">
                <label class="layui-form-label">是否启用</label>
                <div class="layui-input-block">
                    <input id="enable" checked="checked" type="checkbox" name="enable" lay-skin="switch" lay-text="是|否">
                </div>
            </div>
              <div class="layui-form-item">
                <div class="layui-input-block" style="text-align: right;">
                  <a class="layui-btn " lay-submit=""  lay-filter="doSubmit"><label class="layui-icon layui-icon-release"></label>提交</a>
                  <a class="layui-btn layui-btn-warm" onclick="javascript:$('#dataFrm')[0].reset()" lay-filter="data-search-btn"><label class="layui-icon layui-icon-refresh"></label>重置</a>
                </div>
              </div>
          </form>
        </div>
        <!--添加和修改的弹出层结束-->

    </div>
</div>

<script src="/lib/jquery-3.4.1/jquery-3.4.1.min.js" charset="utf-8"></script>
<script src="/lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script src="/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script src="/lib/common/jquery.cookie.min.js" charset="utf-8"></script>
<script src="/lib/common/common.js" charset="utf-8"></script>
<script>
    layui.use(['form', 'table','wangEditor'], function () {
      var $ = layui.jquery,
          form = layui.form,
          table = layui.table,
          wangEditor = layui.wangEditor;

      var tableIns = table.render({
          elem: '#currentTableId',
          url: api + '/notice/getByPage',
          method: 'post',
          contentType: "application/json; charset=utf-8",
          toolbar:"#toolBar",
          cellMinWidth: true,
          parseData: function(res){ //res 即为原始返回的数据
              return {
                  "code": res.code, //解析接口状态
                  "msg": res.msg, //解析提示文本
                  "count": res.data.total, //解析数据长度
                  "data": res.data.records //解析数据列表
              };
          },
          response:{ // 必须配置，否则不加载数据
              statusName:'code', //规定返回的状态码字段为code
              statusCode:200 //规定成功的状态码味200
          },
          done: function(res, curr, count){
              //如果是异步请求数据方式，res即为你接口返回的信息。
              //如果是直接赋值的方式，res即为：{data: [], count: 99} data为当前页数据、count为数据总长度
              // console.log(res);
              //得到当前页码
              // console.log(curr); 
              //得到数据总量
              // console.log(count);
          },
          cols: [[
              {type: "checkbox", width: 50, fixed: "left"},
              {type: "numbers", width: 40, title: '序号', fixed: "left"},
              {field: 'id', width: 80, title: 'ID', hide: true},
              {field: 'title', minWidth: 100, title: '标题'},
              {field: 'content', minWidth: 200, title: '内容', hide: true},
              {field: 'createBy', minWidth: 100, title: '创建人'},
              {field: 'createTime', minWidth: 120, title: '创建时间', sort: true},
              {field: 'updateTime', minWidth: 120, title: '更新时间'},
              {field: 'enable', width: 90, title: '启用状态', align: 'center', templet:function(d){
                      if(d.enable) {
                        return '<span class="layui-badge layui-bg-blue">启用</span>';
                      } else {
                        return '<span class="layui-badge layui-bg-gray">未启用</span>';
                      }
                  }},
              {title: '操作', templet: '#tableBar', fixed: "right", align: "center"}
          ]],
          limits: [10, 15, 20, 25, 5],
          limit: 15,
          page: true
      });

      // 监听搜索操作
      form.on('submit(data-search-btn)', function (data) {
          //执行搜索重载
          table.reload('currentTableId', {
            page: {
              curr: 1
            },
            where: {
              queryParams: {
                  "title": data.field.title,
                  "content": data.field.content,
                  "createBy": data.field.createBy
              }
            },
            async: true
          }, 'data');

          return false;
      });

      //提交数据
      form.on("submit(doSubmit)",function(data){
        let params = {
          "id": data.field.id,
          "title": data.field.title,
          "content": editor.txt.html(),
          "enable": data.field.enable? 1 : 0
        };
        $.ajax({
          url: url,
          method: "post",
          async: true,
          contentType: "application/json; charset=utf-8",
          dataType: "json",
          data: JSON.stringify(params),
          success:function(res){
            layer.msg(res.msg);
            tableIns.reload();
          },
          error:function(){
            layer.msg("操作失败");
          }
        });
        layer.close(mainIndex);
        return false;
      })
 
      //监听表头的事件
      table.on('toolbar(currentTableFilter)', function(obj){
        var checkStatus = table.checkStatus(obj.config.id);
        switch(obj.event){
          case 'delete':
            var checkStatus = table.checkStatus('currentTableId')
                , data = checkStatus.data;
            if(data.length > 0) {
                layer.confirm('真的删除么', function (index) {
                  var arr = [];
                  //遍历
                  data.forEach(function(item){
                      arr.push(item.id)
                  });
                  $.ajax({
                      url: api + "/notice/deleteByIds",
                      method: "delete",
                      contentType: "application/json; charset=utf-8",
                      data: JSON.stringify(arr),
                      success:function(res){
                          layer.msg(res.msg);
                          tableIns.reload();
                      },
                      error:function(){
                          layer.msg("删除失败");
                      }
                  });
                  layer.close(index);
              });
            }
          break;
          case 'add':
            openAddNotice();
          break;
        };
      });

      //监听行数据的事件
      table.on('tool(currentTableFilter)', function (obj) {
        var data = obj.data;
        if (obj.event === 'update'){
				  openUpdateNotice(data);
		    } else if (obj.event === 'show'){
				  showNotice(data);
			  }
      });

      //打开添加公告的弹层
      var mainIndex;
      var url;  //动态的url
      function openAddNotice(){
        mainIndex=layer.open({
          type:1,
          title:'添加公告',
          content:$("#addOrUpdateDiv"),
          area:['800px','575px'],
          success:function(index){
            url=api + "/notice/addNotice";
            //重置表单
            $("#dataFrm")[0].reset();
            editor.txt.html("");
          }
        });	
      };

      function openUpdateNotice(data) {
        mainIndex=layer.open({
          type:1,
          title:'修改公告',
          content:$("#addOrUpdateDiv"),
          area:['800px','575px'],
          success:function(index){
            url=api + "/notice/updateNotice";
            //装载数据表格
            form.val("dataFrm",data);
            //设置富文本的内容
            editor.txt.html(data.content);
          }
        });	
      };
	
      //查看公告
      function showNotice(data){
        var title=data.title;
        var content=data.content;
        var noticeTime=data.createTime;
        var opername=data.createBy;
        var html = '<div style="padding:15px 20px; text-align:justify; line-height: 22px;border-bottom:1px solid #e2e2e2;background-color: #2f4056;color: #ffffff">\n' +
            '<div style="text-align: center;margin-bottom: 20px;font-weight: bold;border-bottom:1px solid #718fb5;padding-bottom: 5px"><h4 class="text-danger">' + title + '</h4></div>\n' +
            '<div style="font-size: 12px">' + content + '</div>\n' +
            '</div>\n';
        parent.layer.open({
            type: 1,
            title: '系统公告'+'<span style="float: right;right: 1px;font-size: 12px;color: #b1b3b9;margin-top: 1px">发布时间:  '+noticeTime+'&nbsp;&nbsp;发布人:'+opername+'</span>',
            area: '45%;',
            shade: 0.8,
            btn: ['关闭'],
            btnAlign: 'c',
            moveType: 1,
            content:html
        });
      }

      //初始化富文本
      var editor = new wangEditor('#content');
      editor.customConfig.uploadImgServer = "/api/upload.json";
      editor.customConfig.uploadFileName = 'image';
      editor.customConfig.pasteFilterStyle = false;
      editor.customConfig.uploadImgMaxLength = 5;
      editor.customConfig.uploadImgHooks = {
          // 上传超时
          timeout: function (xhr, editor) {
              layer.msg('上传超时！')
          },
          // 如果服务器端返回的不是 {errno:0, data: [...]} 这种格式，可使用该配置
          customInsert: function (insertImg, result, editor) {
              console.log(result);
              if (result.code == 1) {
                  var url = result.data.url;
                  url.forEach(function (e) {
                      insertImg(e);
                  })
              } else {
                  layer.msg(result.msg);
              }
          }
      };
      editor.customConfig.customAlert = function (info) {
        layer.msg(info);
      };
      editor.create();
    });
</script>
<script>

</script>

</body>
</html>